<?php
/**
 * +----------------------------------------------------------------------
 * | 订单表控制器
 * +----------------------------------------------------------------------
 *                      .::::.
 *                    .::::::::.            | AUTHOR: siyu
 *                    :::::::::::           | EMAIL: 407593529@qq.com
 *                 ..:::::::::::'           | DATETIME: 2022/04/08
 *             '::::::::::::'
 *                .::::::::::
 *           '::::::::::::::..
 *                ..::::::::::::.
 *              ``::::::::::::::::
 *               ::::``:::::::::'        .:::.
 *              ::::'   ':::::'       .::::::::.
 *            .::::'      ::::     .:::::::'::::.
 *           .:::'       :::::  .:::::::::' ':::::.
 *          .::'        :::::.:::::::::'      ':::::.
 *         .::'         ::::::::::::::'         ``::::.
 *     ...:::           ::::::::::::'              ``::.
 *   ```` ':.          ':::::::::'                  ::::..
 *                      '.:::::'                    ':'````..
 * +----------------------------------------------------------------------
 */
namespace app\admin\controller;

// 引入框架内置类
use think\facade\Request;

// 引入表格和表单构建器
use app\common\facade\MakeBuilder;
use app\common\builder\FormBuilder;
use app\common\builder\TableBuilder;

class Order extends Base
{
    // 验证器
    protected $validate = 'Order';

    // 当前主表
    protected $tableName = 'order';

    // 当前主模型
    protected $modelName = 'Order';

     // 列表
    public function index(){
        $ordertype = [1=>'预约厨师',2=>'厨师加工',3=>'精美套餐'];
        $status = [1=>'未结单',2=>'已接单',3=>'结束',4=>'取消'];
        // 获取主键
        $pk = MakeBuilder::getPrimarykey($this->tableName);
        // 获取列表数据
        $columns = MakeBuilder::getListColumns($this->tableName);
        $columns[7][4]=$ordertype;
        $columns[8][4]=$status;
        //p($columns);die;
        // 获取搜索数据
        $search = MakeBuilder::getListSearch($this->tableName);
        // 获取当前模块信息
        $model = '\app\common\model\\' . $this->modelName;
        $module = \app\common\model\Module::where('table_name', $this->tableName)->find();
        // 检测单页模式
        $isSingle = MakeBuilder::checkSingle($this->modelName);
        if ($isSingle) {
            return redirect($isSingle);
        }
        // 搜索
         // 搜索
        if (Request::param('getList') == 1) {
            $where         = MakeBuilder::getListWhere($this->tableName);
            $orderByColumn = Request::param('orderByColumn') ?? $pk;
            $isAsc         = Request::param('isAsc') ?? 'desc';
            return $model::getList($where, $this->pageSize, [$orderByColumn => $isAsc]);
        }
        // 构建页面
        return TableBuilder::getInstance()
            ->setUniqueId($pk)                              // 设置主键
            ->addColumns($columns)                          // 添加列表字段数据
            ->setSearch($search)                            // 添加头部搜索
            ->addColumn('right_button', '操作', 'btn')      // 启用右侧操作列
            ->addRightButton('info', [                      // 添加额外按钮
                'title' => '添加',
                'icon'  => 'fa fa-plus',
                'class' => 'btn btn-success btn-xs',
                'href'  => url('add', ['parentId' => '__id__'])
            ])
            ->addRightButtons($module->right_button)        // 设置右侧操作列
            ->addTopButtons($module->top_button)            // 设置顶部按钮组
            ->addTopButton('default', [
                'title'   => '展开/折叠',
                'icon'    => 'fas fa-exchange-alt',
                'class'   => 'btn btn-info treeStatus',
                'href'    => '',
                'onclick' => '$.operate.treeStatus()'
            ]) // 自定义按钮
            // ->addTopButton('default', [
            //     'title'   => '导入',
            //     'icon'    => 'fa fa-plus',
            //     'class'   => 'btn btn-success',
            //     'href'    => '',
            //     'onclick' => '$.operate.batchAdd(\'' . url('batchAdd') . '\')'
            // ]) // 自定义按钮
            ->setPagination('false')                        // 关闭分页显示
            ->fetch();
    }


    // 添加
    public function add()
    {
        $ordertype = [1=>'预约厨师',2=>'厨师加工',3=>'精美套餐'];
        $status = [1=>'未结单',2=>'已接单',3=>'结束',4=>'取消'];
        // 获取字段信息
        $columns = MakeBuilder::getAddColumns($this->tableName);
        $columns[6][4]=$ordertype;
        $columns[7][4]=$status;
        //p($columns);die;
        // 提示信息
        $pageTips = '添加提示';
   
        // 获取分组后的字段信息
        $groups = MakeBuilder::getAddGroups($this->modelName, $this->tableName, $columns);
        
        // 构建页面
        $builder = FormBuilder::getInstance();
        $builder->setPageTips($pageTips, 'warning');  // 提示信息
        //$builder->addHidden('hiddeninput', 'hiddeninput');
        //$builder->addSelect('my_selects', '下拉菜单', '提示信息', ['1' => '绿色', '2' => '红色', '3' => '黄色'], '', '', '', '', true);
        // $builder->addRadio('sex', '性别', 'sex提示信息', $color, '0', 'extra_attr', 'extra_class', true);
        // $builder->addCheckbox('duoxuan', '多选', '', $color);
        // $builder->addSelect('my_selects', '下拉菜单', '提示信息', ['1' => '绿色', '2' => '红色', '3' => '黄色']);
        $groups ? $builder->addGroup($groups) : $builder->addFormItems($columns);
        return $builder->fetch();
    }

    // 添加保存
    public function addPost()
    {
        if (Request::isPost()) {
            $data = MakeBuilder::changeFormData(Request::except(['file'], 'post'), $this->tableName);

            $result = $this->validate($data, $this->validate);
            if (true !== $result) {
                // 验证失败 输出错误信息
                $this->error($result);
            } else {
                $model = '\app\common\model\\' . $this->modelName;
                $result = $model::addPost($data);
                if ($result['error']) {
                    $this->error($result['msg']);
                } else {
                   
                    $this->success($result['msg'], 'index');
                }
            }
        }
    }

    // 修改
    public function edit(string $id)
    {
        $model = '\app\common\model\\' . $this->modelName;
        $info = $model::edit($id)->toArray();
        // 获取字段信息
        $columns = MakeBuilder::getAddColumns($this->tableName, $info);

        $ordertype = ['1'=>'预约厨师','2'=>'厨师加工','3'=>'精美套餐'];
        $status = ['1'=>'未结单','2'=>'已接单','3'=>'结束','4'=>'取消'];
       
        $columns[7][4]=$ordertype;
        $columns[8][4]=$status;

    //p($columns);die;
        // 获取分组后的字段信息
        $groups = MakeBuilder::getAddGroups($this->modelName, $this->tableName, $columns);

        // 构建页面
        $builder = FormBuilder::getInstance();
        $groups ? $builder->addGroup($groups) : $builder->addFormItems($columns);
        return $builder->fetch();
    }

    // 修改保存
    public function editPost()
    {
        if (Request::isPost()) {
            $data = MakeBuilder::changeFormData(Request::except(['file'], 'post'), $this->tableName);
           //p($data);die;
            $result = $this->validate($data, $this->validate);
            if (true !== $result) {
                // 验证失败 输出错误信息
                $this->error($result);
            } else {
                $model = '\app\common\model\\' . $this->modelName;
                $result = $model::editPost($data);
                if ($result['error']) {
                    $this->error($result['msg']);
                } else {
                    $this->success($result['msg'], 'index');
                }
            }
        }
    }

}
